home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / bin / startx < prev    next >
Text File  |  2008-05-29  |  4KB  |  216 lines

  1. #!/bin/bash
  2.  
  3. # $Xorg: startx.cpp,v 1.3 2000/08/17 19:54:29 cpqbld Exp $
  4. #
  5. # This is just a sample implementation of a slightly less primitive
  6. # interface than xinit.  It looks for user .xinitrc and .xserverrc
  7. # files, then system xinitrc and xserverrc files, else lets xinit choose
  8. # its default.  The system xinitrc should probably do things like check
  9. # for .Xresources files and merge them in, startup up a window manager,
  10. # and pop a clock and serveral xterms.
  11. #
  12. # Site administrators are STRONGLY urged to write nicer versions.
  13. #
  14. # $XFree86: xc/programs/xinit/startx.cpp,v 3.16tsi Exp $
  15.  
  16. unset DBUS_SESSION_BUS_ADDRESS
  17. unset SESSION_MANAGER
  18.  
  19.  
  20. userclientrc=$HOME/.xinitrc
  21. sysclientrc=/etc/X11/xinit/xinitrc
  22.  
  23.  
  24. userserverrc=$HOME/.xserverrc
  25. sysserverrc=/etc/X11/xinit/xserverrc
  26. defaultclient=xterm
  27. defaultserver=/usr/bin/X
  28. defaultclientargs=""
  29. defaultserverargs=""
  30. defaultdisplay=":0"
  31. clientargs=""
  32. serverargs=""
  33.  
  34. enable_xauth=1
  35.  
  36.  
  37.  
  38. if [ -f $userclientrc ]; then
  39.     defaultclientargs=$userclientrc
  40. elif [ -f $sysclientrc ]; then
  41.     defaultclientargs=$sysclientrc
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48. fi
  49.  
  50.  
  51. whoseargs="client"
  52. while [ x"$1" != x ]; do
  53.     case "$1" in
  54.     # '' required to prevent cpp from treating "/*" as a C comment.
  55.     /''*|\./''*)
  56.     if [ "$whoseargs" = "client" ]; then
  57.         if [ x"$clientargs" = x ]; then
  58.         client="$1"
  59.         else
  60.         clientargs="$clientargs $1"
  61.         fi
  62.     else
  63.         if [ x"$serverargs" = x ]; then
  64.         server="$1"
  65.         else
  66.         serverargs="$serverargs $1"
  67.         fi
  68.     fi
  69.     ;;
  70.     --)
  71.     whoseargs="server"
  72.     ;;
  73.     *)
  74.     if [ "$whoseargs" = "client" ]; then
  75.         clientargs="$clientargs $1"
  76.     else
  77.         # display must be the FIRST server argument
  78.         if [ x"$serverargs" = x ] && \
  79.          expr "$1" : ':[0-9][0-9]*$' > /dev/null 2>&1; then
  80.         display="$1"
  81.         else
  82.         serverargs="$serverargs $1"
  83.         fi
  84.     fi
  85.     ;;
  86.     esac
  87.     shift
  88. done
  89.  
  90. # process client arguments
  91. if [ x"$client" = x ]; then
  92.     # if no client arguments either, use rc file instead
  93.     if [ x"$clientargs" = x ]; then
  94.     client="$defaultclientargs"
  95.     else
  96.     client=$defaultclient
  97.     fi
  98. fi
  99.  
  100. # process server arguments
  101. if [ x"$server" = x ]; then
  102.     server=$defaultserver
  103.  
  104.     # if no server arguments or display either, use defaults
  105.     if [ x"$serverargs" = x -a x"$display" = x ]; then
  106.     # For compatibility reasons, only use xserverrc if there were no server command line arguments
  107.     if [ -f $userserverrc ]; then
  108.         server=$userserverrc
  109.     elif [ -f $sysserverrc ]; then
  110.         server=$sysserverrc
  111.     fi
  112.  
  113.     serverargs=$defaultserverargs
  114.     display=$defaultdisplay
  115.     fi
  116. fi
  117.  
  118. if [ x"$enable_xauth" = x1 ] ; then
  119.     if [ x"$XAUTHORITY" = x ]; then
  120.         XAUTHORITY=$HOME/.Xauthority
  121.         export XAUTHORITY
  122.     fi
  123.  
  124.     removelist=
  125.  
  126.     # set up default Xauth info for this machine
  127.  
  128.     # check for GNU hostname
  129.     if hostname --version > /dev/null 2>&1; then
  130.         if [ -z "`hostname --version 2>&1 | grep GNU`" ]; then
  131.             hostname=`hostname -f`
  132.         fi
  133.     fi
  134.  
  135.     if [ -z "$hostname" ]; then
  136.         hostname=`hostname`
  137.     fi
  138.  
  139.     authdisplay=${display:-:0}
  140.  
  141.     mcookie=`/usr/bin/mcookie`
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.     if test x"$mcookie" = x; then
  150.         echo "Couldn't create cookie"
  151.         exit 1
  152.     fi
  153.     dummy=0
  154.  
  155.     # create a file with auth information for the server. ':0' is a dummy.
  156.     xserverauthfile=`mktemp -p /tmp serverauth.XXXXXXXXXX`
  157.     trap "rm -f $xserverauthfile" HUP INT QUIT ILL TRAP KILL BUS TERM
  158.     xauth -q -f $xserverauthfile << EOF
  159. add :$dummy . $mcookie
  160. EOF
  161.     serverargs=${serverargs}" -auth "${xserverauthfile}
  162.  
  163.     # now add the same credentials to the client authority file
  164.     # if '$displayname' already exists do not overwrite it as another
  165.     # server man need it. Add them to the '$xserverauthfile' instead.
  166.     for displayname in $authdisplay $hostname$authdisplay; do
  167.         authcookie=`xauth list "$displayname" \
  168.         | sed -n "s/.*$displayname[[:space:]*].*[[:space:]*]//p"` 2>/dev/null;
  169.         if [ "z${authcookie}" = "z" ] ; then
  170.             xauth -q << EOF 
  171. add $displayname . $mcookie
  172. EOF
  173.         removelist="$displayname $removelist"
  174.         else
  175.             dummy=$(($dummy+1));
  176.             xauth -q -f $xserverauthfile << EOF
  177. add :$dummy . $authcookie
  178. EOF
  179.         fi
  180.     done
  181. fi
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190. xinit $client $clientargs -- $server $display $serverargs
  191.  
  192.  
  193. if [ x"$enable_xauth" = x1 ] ; then
  194.     if [ x"$removelist" != x ]; then
  195.         xauth remove $removelist
  196.     fi
  197.     if [ x"$xserverauthfile" != x ]; then
  198.         rm -f $xserverauthfile
  199.     fi
  200. fi
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.